// routes/pages.js 文件专用的中间件
// 导入数据库操作模型
const { BannerModel,PersonModel,ListModel,CartModel } = require('../db/model')


// 1. 处理获取轮播图列表的逻辑
const getBannerList = async (req, res, next) => {
  // 因为我们需要 oa 后台管理系统来管理我们的 轮播图
  // oa 管理的数据库就是我要访问的数据库
  // 我需要访问和 oa 管理的一样的数据库位置
  // 1-1. 读取轮播图列表
  const result = await BannerModel.find()

  // 1-2. 是需要把读取出来的数据, 放在后面的路由处理函数内使用
  // 所以我们只需要挂载在指定位置

  req.banner = result

  next()
}

// 2. 判断是否有用户信息
const getUserInfo = async (req, res, next) => {
  // 拿到 session 空间内是否有信息
  const { info } = req.session

  if (!info) return next()

  // 拿到用户 nickname
  const { nickname } = info

  // 存储到 req 身上
  req.nickname = nickname

  next()
}
// 3.从数据库中读取到该用户的数据
const getUserMessage = async (req, res, next) => {
  // 3-1.拿到 session 空间内是否有信息
  const { info } = req.session

  if (!info) return next()

  // 3-2拿到用户 id
  const { id } = info
   //3-3 根据 id 获取信息在数据库中找到对应的信息
   const result = await await PersonModel.findById(id)

   // 3-3存到req身上
   
    req.list= {
      id: result._id,
      username:result.username,
      password:result.password,
      nickname:result.nickname,
      age:result.age,
      gender:result.gender,
      desc:result.desc,
      avatar:result.avatar
    }
  

  next()
}

//4.获取商品列表
const getShopList = async (req, res, next) => {
  const {current} = req.query
  const pagesize = 12
  const start = (current - 1) * pagesize
  const result = await ListModel.find().skip(start).limit(pagesize)
  const total = (await ListModel.find()).length
 
  const totalpage = Math.ceil((total - 0) / 12)
  // console.log(result)
  
  req.shoplist = result
  req.totalpage = totalpage
  req.current = current

  next()
}

//4.获取购物车列表
const getCartList = async (req, res, next) => {
  const usersID = req.session.info
  const result = await CartModel.find(usersID)

  // console.log(result)
  // 全选按钮的实现
  // const定义变量不可更改
    let selected = 0
    let selectNum = 0
    let itemPrice = 0
    let selectPrice = 0
  result.forEach(function(item){
  if(item.is_select === true ){
  selected++
  selectNum += item.cart_number
  itemPrice = item.price*item.cart_number
  selectPrice += itemPrice
 
  }
  
})
  // console.log(selected)
  // console.log(result.length)
  // console.log(selectNum)
  // console.log(selectPrice)
  // console.log(itemPrice)
  
  
  req.selected = selected 
  req.selectNum = selectNum
  req.selectPrice = selectPrice
  req.cartlist = result
  next()
  // 全选没有变蓝，弄不出来
  
  // selectNum = item.cart_number之和
  // selectPrice = (item.price*item.cart_number)之和
 
  // req.selectPrice = selectPrice
  // // 渲染的时候加上
  
  
  

  
}


// 导出
module.exports = {
  getBannerList,
  getUserInfo,
  getUserMessage,
  getShopList,
  getCartList
}